标准库名字空间

  标准库定义在一个称为 std 的名字空间里。这也就是为什么我写的是 std::cout,而不直接写 cout 的原因。我这样做是明确说出要使用的是标准 cout,而不是其他的什么 cout

  标准库的每种功能都是通过某个像 <iostream> 这样的头文件提供的。例如,

    #include <string>
    #include <list>

这就使标准的 stringlist 都可以用了。借助于前缀 std:: 就能使用它们:

    std::string s = "Four legs Good;two legs Baaad!";
    std::list<std::string> slogans;

为了简单起见,我将很少在实例中显式使用 std:: 前缀,也将不总是去显式地 #include 必要的头文件。为了能编译和运行这里的程序片段,你必须自己去 #include 适当的头文件。除此之外,你还必须使用 std:: 前缀,或者将出自 std 的每个名字都做成全局的。例如,

    #include <string>       // 使标准字符串功能可以使用
    using namespace std;    // 是所有std名字都可用,不必加std::前缀

    string s = "Ignorance is bliss!";

一般来说,将一个名字空间中的所有名字统统倾倒进全局名字空间里,并不是一种好的做法。但是,为使这里用于阐述语言和库特征的实例比较短小,我还是忽略了那些将重复出现的 #includestd:: 限定符。在这本书里,我几乎是只用到标准库。所以,如果用到了某个来自标准库的名字,那么,或者在那里用的就是标准库所提供的东西,或者就是为该项标准库功能可能如何定义提供一个解释。

🔚